//
// Created by Administrator on 2025/1/16.
//
#ifndef MXZXFILEUTIL_H
#define MXZXFILEUTIL_H
#define BUFFER_SIZE 12
#ifdef __cplusplus
extern "C" {
#endif
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
// #include <utime.h>
#include <stdint.h>
#include <stdlib.h>
#include <time.h>
// 定义WAV文件头结构
typedef struct {
   int code;
   char* msg;
   const char* result;
} ComFlowResult;

typedef struct {
    char riff[4];             // "RIFF"
    uint32_t chunk_size;      // 文件大小（不包括前8字节）
    char wave[4];             // "WAVE"
    char fmt[4];              // "fmt "
    uint32_t fmt_chunk_size;  // fmt子块大小（固定为16）
    uint16_t audio_format;    // 音频格式（1表示PCM）
    uint16_t num_channels;    // 声道数
    uint32_t sample_rate;     // 采样率
    uint32_t byte_rate;       // 字节率
    uint16_t block_align;     // 块对齐
    uint16_t bits_per_sample; // 位深度
    char data[4];             // "data"
    uint32_t data_chunk_size; // 数据块大小
} WAVHeader;

ComFlowResult *newWavFromPcmFile(const char *pcmFilePath, const char *wavFilePath,int sample_rate, int num_channels ,int bits_per_sample);
    //生成一个随机的后缀为suffix的随机文件名称
char *mxzxNewRandomFileName(const char *suffix);

//指定目录 生成一个随机的后缀为suffix的随机文件路径
char *mxzxNewRandomFilePath(const char* fileDir, const char *suffix);

int mxzxNewFileForName(const char *allFilePath);

FILE *openFileByPath(const char *allFilePath);

int isMp3File(const char *filename);
void format_time(double total_seconds, int *hours, int *minutes, int *seconds);
void updateFileTime(const char *filename);
#ifdef __cplusplus
}
#endif


#endif //MXZXFILEUTIL_H
